package com.test.demo.consumer;

import com.test.demo.provider.service.DemoService;
import org.apache.dubbo.config.annotation.Reference;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

/**
 * 本地伪装
 * 远程服务后，客户端通常只剩下接口，而实现全在服务器端，但提供方有些时候想在客户端也执行部分逻辑，比如：做 ThreadLocal 缓存，提前验证参数，
 * 调用失败后伪造容错数据等等，此时就需要在 API 中带上 Stub，客户端生成 Proxy 实例，会把 Proxy 通过构造函数传给 Stub 1，
 * 然后把 Stub 暴露给用户，Stub 可以决定要不要去调 Proxy。
 * 动态代理
 */
@SpringBootTest
class StubCosumer {

    @Reference(version = "timeout",timeout = 6000,stub = "true")
    private DemoService demoService;
    @Test
    void contextLoads() {
        String world = demoService.sayHello("world");
        System.out.println(world);
    }

}
